home *** CD-ROM | disk | FTP | other *** search
- /* Copyright 1993 Michael B. Johnson
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any non-commercial
- * purpose and without fee is hereby granted, provided that the
- * above copyright notice appears in all copies. Michael B. Johnson
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- * Permission to use, copy, modify or distribute this software
- * and its documentation for any commercial purpose must be
- * confirmed in writing with Michael B. Johnson. He can be
- * contacted at:
- * 20 Ames St. E15-023G
- * Cambridge, MA 02141
- * (617) 547 0563
- *
- */
-
-
- #import <appkit/appkit.h>
- #import "tcl.h"
-
- //typedef void (*__w_fptr)();
-
- #define WWTCLINTERP_PANEL_COUNT 10
-
- @interface WWTCLInterp:Object
- {
- Tcl_Interp *interp;
- Tcl_HashTable uiHashTableByWindow;
- BOOL checkCmdBufSize,
- continueControlPanel;
- int cmdBufSize;
- char *cmdBuf;
- id initializationText;
- id controlPanel;
- id delegate;
- id accessoryPanel0;
- id accessoryPanel1;
- id accessoryPanel2;
- id accessoryPanel3;
- id accessoryPanel4;
- id accessoryPanel5;
- id accessoryPanel6;
- id accessoryPanel7;
- id accessoryPanel8;
- id accessoryPanel9;
- id accessoryPanels[WWTCLINTERP_PANEL_COUNT];
- id accessoryLists[WWTCLINTERP_PANEL_COUNT];
- id errorWindow;
- id errorInfoText;
-
- List *traceList;
- List *manipulatorList;
- List *controlPanelList;
-
- BOOL showErrors, dejaVuInIB, awakeInIB;
-
- char **nibNameArgv, *pathInIB;
- int nibNameArgc;
-
- int setc, procc, tmpStringc, tmpStringIndex;
- char **setv, **procv, **tmpStringv;
- }
-
- - init;
- - free;
-
- - loadNibFiles;
-
- - (int)eval:(const char *)cmd;
- - (char *)eval:(const char *)cmd :(int *)ret;
- - (int)globalEval:(const char *)cmd;
- - (char *)globalEval:(const char *)cmd :(int *)ret;
- - (BOOL)exprBoolean:(const char *)cmd;
- - (long)exprLong:(const char *)cmd;
- - (double)exprDouble:(const char *)cmd;
- - (char *)exprString:(const char *)cmd :(int *)ret;
- - (int)source:(const char *)filename;
- - (void)resetResult;
-
- - (int)unsetVar:(char *)variableName;
- - (int)unsetVar2:(char *)name1 :(char *)name2;
- - (char *)setVar:(char *)variableName toValue:(char *)newValue;
- - (char *)setVar2:(char *)name1 :(char *)name2 toValue:(char *)newValue;
- - (char *)setLocalVar:(char *)variableName toValue:(char *)newValue;
- - (char *)setLocalVar2:(char *)name1 :(char *)name2 toValue:(char *)newValue;
- - (BOOL)globalVarExists:(const char *)varName;
- - (BOOL)varExists:(const char *)varName;
- - (char *)getVar:(char *)variableName;
- - (char *)getVar2:(char *)name1 :(char *)name2;
- - (char *)getLocalVar:(char *)variableName;
- - (char *)getLocalVar2:(char *)name1 :(char *)name2;
-
- - generateClosureFrom:(const char *)originalExpression andForGlobalsCall:(Tcl_VarTraceProc *)writeProc usingData:(ClientData)clientData;
- - linkVarNamed:(const char *)varName toPointer:(char *)cPointer withFlags:(int)flags;
- - unlinkVarNamed:(const char *)varName;
-
- - setShowErrors:(BOOL)flag;
- - (BOOL)showErrors;
- - showError:(char *)error; // this is for subclasses only!
-
- - findControlPanelTitled:(const char *)title;
-
- - unloadControlPanels;
- - updateTclVariables:view :list;
- - loadControlPanel:(char *)controlPanelNibFilename modally:(BOOL)runModallyAndClose;
-
- - setDelegate:newDelegate;
- - delegate;
-
- - cancelControlPanel:sender;
- - continueControlPanel:sender;
-
- - (BOOL)regExpMatch:(char *)string against:(char *)regexp;
-
- - (const char *)pathInIB;
- - setPathInIB:(const char *)newPath;
- - setNibNameArgc:(int)newArgc Argv:(char **)newArgv;
- - (const char **)nibNameArgv;
- - (int)nibNameArgc;
-
- - closeErrorWindow:sender;
-
- - addToManipulatorList:newManipulator;
-
- - (void)addCommand:(const char *)name :(Tcl_CmdProc *)func :(id)me;
- - (void)addCommand:(const char *)name :(Tcl_CmdProc *)func :me :(Tcl_CmdDeleteProc *)deleteFunc;
- - (BOOL)addCommand:(const char *)name fromFile:(const char *)fileName usingFunction:(const char *)funcName AndObject:me;
-
- - (void)createMathFunc:(const char *)name numArgs:(int)numArgs argTypes:(Tcl_ValueType *)argTypes proc:(Tcl_MathProc *)proc clientData:(ClientData)clientData;
-
- // this method is a hack; you shouldn't use it!
- - (char **)argvFromCmd:(const char *)cmd;
-
- - traceWritesOn:(const char *)varName andCall:(Tcl_VarTraceProc *)traceProcPointer usingData:(ClientData)datum;
- - traceWritesOn2:(const char *)varName1 :(const char *)varName2 andCall:(Tcl_VarTraceProc *)traceProcPointer usingData:(ClientData)datum;
- - untraceWritesOn:(const char *)varName calling:(Tcl_VarTraceProc *)traceProcPointer usingData:(ClientData)datum;
- - _untraceWritesOn:(const char *)varName calling:(Tcl_VarTraceProc *)traceProcPointer usingData:(ClientData)datum;
- - traceReadsOn:(const char *)varName andCall:(Tcl_VarTraceProc *)traceProcPointer usingData:(ClientData)datum;
- - untraceReadsOn:(const char *)varName calling:(Tcl_VarTraceProc *)traceProcPointer usingData:(ClientData)datum;
-
- - (Tcl_Interp *)interp;
-
- - windowWillClose:sender;
-
- - writeState:(NXStream *)stream;
-
- // private API routine for traces to untrace themselves without getting free'ed (which they'll do themselves)
- //
- - _untraceWritesOn:(const char *)varName calling:(Tcl_VarTraceProc *)traceProcPointer usingData:(ClientData)datum;
-
- @end
-